* Мир вампуса * Источник: Стюарт Рассел,Питер Норвиг.Искусственный интеллект.Современный подход.2-е издание. * Москва,Издательский дом "Вильямс",2006г. Стр.286. * Программа КОНЦЕПТ, 24.04.2010-15.05.2011, www.gendoc.ru * Глобальные параметры протяженности мира присвоить МИР_ВЫСОТА 4 МИР_ШИРИНА 4 присвоить цвет_стрелка 11 цвет_вампуса 10 цвет_ямы 9 цвет_золота 12 цвет_пусто 16 функция Есть_в_квадрате? высота ширина объект память локальный ответ присвоить ответ [$ложь] если (память существует $результат "МИР;[высота];[ширина]" ) если (множество и $результат "[МИР;[высота];[ширина]]" [объект] ) == [объект] присвоить ответ [$истина] конец конец присвоить $результат [ответ] возврат функция Есть_в_окрестности? высота ширина объект память локальный ответ присвоить ответ [$ложь] если (Есть_в_квадрате? [высота] (вычислить - $результат [ширина] 1 ) [объект] ) присвоить ответ [$истина] конец если (Есть_в_квадрате? [высота] (вычислить + $результат [ширина] 1 ) [объект] ) присвоить ответ [$истина] конец если (Есть_в_квадрате? (вычислить - $результат [высота] 1 ) [ширина] [объект] ) присвоить ответ [$истина] конец если (Есть_в_квадрате? (вычислить + $результат [высота] 1 ) [ширина] [объект] ) присвоить ответ [$истина] конец присвоить $результат [ответ] возврат функция Чувство высота ширина память локальный чувство присвоить чувство {} * Проверка попытки выхода за границу мира вампуса если (память существует $результат "МИР;[высота];[ширина]" ) * Блеск золота если (Есть_в_квадрате? [высота] [ширина] золото ) множество или чувство $ блеск конец * Чувство ветерка если (Есть_в_окрестности? [высота] [ширина] яма ) множество или чувство $ ветерок конец * Чувство неприятного запаха если (Есть_в_окрестности? [высота] [ширина] вампус ) множество или чувство $ запах конец иначе присвоить чувство удар конец присвоить $результат [чувство] >Чувство в [высота] [ширина] = [чувство] возврат функция Создать_мир_вампуса память локальный индекс_высота индекс_ширина количество_ям количество список сгенерить СПИСОК_ВЫСОТА 1 [МИР_ВЫСОТА] список сгенерить СПИСОК_ШИРИНА 1 [МИР_ШИРИНА] для индекс_высота [СПИСОК_ВЫСОТА] для индекс_ширина [СПИСОК_ШИРИНА] присвоить "МИР;[индекс_высота];[индекс_ширина]" {} следующий следующий * Координаты вампуса список ВыбратьСлучайный индекс_высота [СПИСОК_ВЫСОТА] список ВыбратьСлучайный индекс_ширина [СПИСОК_ШИРИНА] если "[индекс_высота];[индекс_ширина]" == 1;1 увеличить индекс_ширина конец множество или "МИР;[индекс_высота];[индекс_ширина]" [МИР;[индекс_высота];[индекс_ширина]] вампус * Координаты золота список ВыбратьСлучайный индекс_высота [СПИСОК_ВЫСОТА] список ВыбратьСлучайный индекс_ширина [СПИСОК_ШИРИНА] если "[индекс_высота];[индекс_ширина]" == 1;1 увеличить индекс_ширина конец множество или "МИР;[индекс_высота];[индекс_ширина]" [МИР;[индекс_высота];[индекс_ширина]] золото * Координаты ям вычислить округлить количество_ям (вычислить * $результат [МИР_ВЫСОТА] [МИР_ШИРИНА] 0,2 ) присвоить количество 0 пока [количество] < [количество_ям] список ВыбратьСлучайный индекс_высота [СПИСОК_ВЫСОТА] список ВыбратьСлучайный индекс_ширина [СПИСОК_ШИРИНА] если "[индекс_высота];[индекс_ширина]" != 1;1 если (множество и $результат [МИР;[индекс_высота];[индекс_ширина]] яма ) != яма множество или "МИР;[индекс_высота];[индекс_ширина]" [МИР;[индекс_высота];[индекс_ширина]] яма увеличить количество конец конец цикл * Координаты стрелка множество или МИР;1;1 [МИР;1;1] стрелок возврат функция Показать_мир_вампуса память локальный индекс_высот индекс_ширина для индекс_высота [СПИСОК_ВЫСОТА] для индекс_ширина [СПИСОК_ШИРИНА] Рисовать_квадрат [индекс_высота] [индекс_ширина] >[индекс_высота] [индекс_ширина] = [МИР;[индекс_высота];[индекс_ширина]] следующий следующий возврат функция Рисовать_квадрат высота ширина память локальный х1 у1 х2 у2 цвет вычислить * х1 [ширина] 100 вычислить * у1 (вычислить - $результат [МИР_ВЫСОТА] [высота] ) 100 увеличить у1 100 вычислить + х2 [х1] 100 вычислить + у2 [у1] 100 присвоить цвет [цвет_пусто] если (множество и $результат [МИР;[высота];[ширина]] яма ) присвоить цвет [цвет_ямы] конец если (множество и $результат [МИР;[высота];[ширина]] золото ) присвоить цвет [цвет_золота] конец если (множество и $результат [МИР;[высота];[ширина]] стрелок ) присвоить цвет [цвет_стрелка] конец если (множество и $результат [МИР;[высота];[ширина]] вампус ) присвоить цвет [цвет_вампуса] конец присвоить $ЦветКисти [цвет] рисовать прямоугольник [х1] [у1] [х2] [у2] рисовать текстВПрямоугольнике [х1] [у1] (вычислить + $результат [х1] 35 ) (вычислить + $результат [у1] 20 ) "[высота],[ширина]" если [МИР;[высота];[ширина]] != {} рисовать текстВПрямоугольнике [х1] [у1] [х2] [у2] (строка заменитьСимволы $результат [МИР;[высота];[ширина]] ';' ' ' ) конец возврат Создать_мир_вампуса Показать_мир_вампуса Чувство 2 2